package com.spring.test.aop.pattern.proxy.dynamic;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

//动态代理实现
public class DynamicProxy implements InvocationHandler {
   // 这个就是我们要代理的真实对象
   private Object obj;

   // 构造方法，给我们要代理的真实对象赋初值
   public DynamicProxy(Object object) {
       this.obj = object;
   }

   //相比静态代理，动态代理减只需要实现一个接口即可完成，而静态代理每次都要实现新加的方法以及维护被代理方法
   @Override
   public Object invoke(Object proxy, Method method, Object[] args)
           throws Throwable {

       //********************方法前增强***************************
       // 反射调用目标方法
       return method.invoke(obj, args);
//		return null;

       //********************方法后增强***************************
   }

}
